﻿using FlashPay.EF.Models;
using FlashPay.Entity;
using FlashPay.Entity.Parameter;
using FlashPay.Entity.Request.Receipt;
using FlashPay.Entity.Response.Payment;
using System;

namespace FlashPay.DAO.Interface.Receipt
{
   public interface ReceiptDao : IDisposable
    {
        /// <summary>
        /// 根据编号获取存款记录
        /// </summary>
        /// <param name="orderNo">编号</param>
        /// <returns>Company</returns>
        DepositRecord Get(long orderNo);

        /// <summary>
        /// 分页查询
        /// </summary>
        /// <param name="query">查询条件</param>
        /// <returns>PagedList<UserInfo></returns>
        DataGrid<PaymentCardResponse> GetReceiptCard(PaymentCardQuery query);

        //获取付款纪录列表
        PagedList<DepositOrPaymentRecordResponse> GetReceiptRecordList(PaymentRecordQuery query);

        /// <summary>
        /// 存款记录查询
        /// </summary>
        /// <param name="query">查询条件</param>
        DataGrid<DepositRecordResponse> GetReceiptRecord(DepositRecordQuery query);

        /// <summary>
        /// 获取匹配存款记录
        /// </summary>
        /// <param name="query">查询条件</param>
        DataGrid<DepositRecordResponse> GetMatchDepositRecord(DepositRecordQuery query);

        /// <summary>
        /// 重置付款记录
        /// </summary>
        /// <param name="orderNo">订单号</param>
        bool ResetNoticeStatus(long orderNo);

        /// <summary>
        /// 补推送
        /// </summary>
        /// <param name="orderNo">订单编号</param>
        /// <returns></returns>
        int ReceiptMatchMakeUp(long orderNo);

        /// <summary>
        /// 补推送
        /// </summary>
        /// <param name="request"></param>
        JResult MakeUp(MakeUpRequest request);

        /// <summary>
        /// 改变公司
        /// </summary>
        /// <param name="request"></param>
        JResult ChangeCompany(ChangeCompanyRequest request);
    }
}
